<template>
	<view class="content screen-all" @click="copy">
		
	</view>
</template>
<script>
	import { handleClipboard } from '../../common/clipboard.js';
	export default {
		data() {
			return {
				code: '', //微信授权的code
				
				type: '', // wechat alipay web
				
				urlType: '', //路由分类
				tableNumber: '', //桌位号
				
				redirectUri: '', //进入程序 最新拼接的 登录授权回调地址
				
				alipaycode: '',
			}
		},
		onLoad(opt) {
			if (/MicroMessenger/.test(window.navigator.userAgent)) {
				// uni.showToast({ title: '微信客户端', icon: 'none' });
				this.type = 'wechat';
			} else if (/AlipayClient/.test(window.navigator.userAgent)) {
				// uni.showToast({ title: '支付宝客户端', icon: 'none' });
				this.type = 'alipay';
			} else {
				uni.showToast({ title: '请使用微信或支付宝扫码进入。', icon: 'none', duration: 10000 });
				this.type = 'web';
			}
			
			//会员身份:1=用户,2=达人,3=达人助理,4=管理者5=服务员
			
			// 通过获取到的参数进行验证
			// 在公众号跳转路径里设置的模板为 http://rabbit.jiujingwulian.com/h5?params=r_1_0
			// 参数一：list[0] = 是否是测试链接，d=是测试 r=正式。
			// 参数二：list[1] = 类型 
					// 1=在线点餐。==已完成
					// 2=扫码点餐。
					// 3=会员中心。
					// 4=达人中心。
					// 5=达人助理中心。
					// 6=管理员。
					// 7=桌位预定。
					// 8=
					// 9=存酒。
					// 
					// 
			// 参数三：list[2] = 桌位号。
			
			console.log('local===>', opt);
			
			let isDebug = false;     //是否为测试
			let urlType = '';       //扫码类型
			let tableNumber = '';    //桌位号
			
			if(opt && opt.params){
				let _list = opt.params.split('_');
				//参数解析
				if(_list.length > 0){
					if(_list[0] == 'd'){
						//测试
						isDebug = true;
					}else{
						//正式
						isDebug = false;
					}
				}
				//参数解析
				if(_list.length > 1){
					//扫码类型
					urlType = _list[1];
					this.urlType = urlType;
					console.log('this.urlType=', this.urlType)
				}
				//参数解析
				if(_list.length > 2){
					//扫码桌位号
					tableNumber = '' + _list[2];
					this.tableNumber = tableNumber;
					console.log('this.tableNumber=', this.tableNumber)
				}
			}else{
				// 链接无参进入 - 非扫码（扫错码）或点击错误链接进入。
				// 直接进入扫码点餐、或者提示必须扫码进入。
			}
			
			if(this.type == 'wechat'){
				this.init(opt.params);
			}else if(this.type == 'alipay'){
				uni.showToast({
					title: "授权中...",
					icon: "loading",
					duration:1200
				})
				setTimeout(()=>{
					this.alipay(opt.params);
				}, 1200);
			}else{
				//网页进入。
				uni.reLaunch({
					url: "../product-list/goods-list"
				})
			}
		},
		methods: {
			copy() {//这是一个点击事件
				return ;
				handleClipboard(''+this.alipaycode, event, () => { //调用封装的复制方法
					uni.showToast({//弹出
						// icon: 'none',//不显示图标
						icon: 'success',//显示图标
						title: '复制成功'
					})
				 }, ()=>{
					 uni.showToast({
					 icon: 'none',//不显示图标
					 title: '复制失败',
				   })
				})	 
			  },
			/**
			 * 截取code
			 */
			getUrlKey(name,url){
				return (decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [null, ""])[1].replace(/\+/g, '%20')) || '')
			},
			
			// == 微信的验证 == 
			// == 微信的验证 == 
			// == 微信的验证 == 
			init (params) {
				if(location.href.indexOf('code') != -1){
					this.code = this.getUrlKey('code',location.href);
					console.log(this.code);
					if(this.code){
						//成功获取code
						console.log("成功获取code", this.code)
						this.login(this.code, 1);
					}else{
						//未获取到code
						console.log("未获取code，1")
						this.setHref(params)
					}
				}else{
					//未获取到code
					console.log("未获取code，2")
					this.setHref(params)
				}	
			},
			setHref (params) {
				//从这里验证和处理端口入口数据
				let redirect_uri = '';
				let _url = getApp().globalData.link;
				if(params){
					_url = getApp().globalData.link + '?params=' + params;
				}else{
					console.log('params= null');
					_url = getApp().globalData.link + '?params=r_1_0';
				}
				redirect_uri = encodeURIComponent(`${_url}`);
				location.replace(`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${getApp().globalData.appid}&redirect_uri=${redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`);
			},
			
			alipay (params) {
				let that = this;
				ap.getAuthCode({
					appId: '2021002183619766',
					scopes: ['auth_user'],
				}, function(res) {
					if (res.authCode) {
						that.alipaycode = res.authCode;
						
						that.login(res.authCode, 2);
					}else{
						uni.showToast({
							title:'支付宝授权失败',
							icon:'error'
						})
					}
				});
			},
			
			login (code, type) {
				if(type == 1 && this.urlType == 6){
					// 是微信登录 并且是管理员入口
					uni.setStorageSync("wechat_code", code);
					uni.reLaunch({
						url: "../login/admin-login"
					})
					return;
				}
				// type==1 微信      2支付宝
				let params = {
					code: type == 1 ? code : '',       // 微信code
					auth_code: type == 2 ? code : '',                     // 支付宝code
					invite_code: this.tableNumber,     // 扫码解析出来的桌位号
				}
				console.log('weichatLogin=', params);
				//会员身份:1=用户,2=达人,3=达人助理,4=管理者5=服务员
				this.$request("api/user/wechatLogin", params)
					.then(({ code, msg, data, time }) => {
						console.log(code, msg, data);
						if(code == 1){
							
							// 缓存token
							uni.setStorageSync("token", data.token);
							// 缓存用户身份
							uni.setStorageSync("role", data.role);
							// 缓存桌位号
							uni.setStorageSync("invite_code", params.invite_code);
							// 授权后获取的昵称
							uni.setStorageSync("user_nickname", data.nickname);
							// 授权后获取的头像
							uni.setStorageSync("user_avatar", data.avatar);
							// 授权后获取的微信授权id
							uni.setStorageSync("user_openid", data.openid ? data.openid : '');
							// 授权后获取的支付宝授权id
							uni.setStorageSync("user_user_id", data.user_id ? data.user_id : '');
							
							if(data.is_mobile){
								//根据扫码类型进入相关页面
								this.toPages();
							}else{
								// 前往登录页面，绑定手机号
								uni.reLaunch({
									url: "../login/login?type="+this.urlType,
								})
							}
						}else{
							uni.showToast({
								title: msg + '桌位:' + this.tableNumber,
								icon: "error",
								duration: 1200,
							})
						}
					}).catch((e) => {
						console.log(e);
						uni.showToast({
							title: "授权登录失败！",
							icon: "error"
						})
					});
				
				// avatar: "https://thirdwx.qlogo.cn/mmopen/vi_32/mH6l9icm85diaZFibqZwd1unH6vHKZGz5ha9JOVdzSJsMaLdTlVkMOuGNrhHtyCgMibGLfl5piaian0Gqv0WM2pHLgrA/132"
				// createtime: 1632882924
				// is_mobile: false
				// nickname: "吃小笼包嘛"
				// openid: "oNA5P6agphIR4vUR_tiSM4URxf8Q"
				// token: "c5562c13-5504-451c-8493-5da72bde057f"
			},
			//根据扫码获取的参数前往不同的页面
			// 1=在线点餐。==已完成
			// 2=扫码点餐。
			// 3=会员中心。
			// 4=达人中心。
			// 5=达人助理中心。
			// 6=管理员。
			// 7=桌位预定。
			// 8=
			// 9=存酒。
			toPages () {
				if(this.urlType == 1){
					// 如果是在线点单直接把桌位数据清除
					uni.setStorageSync("invite_code", "");
					uni.reLaunch({
						url: "../product-list/goods-list"
					})
				} else if (this.urlType == 2) {
					if(this.tableNumber){
						uni.reLaunch({
							url: "../role-user/scan-page?tableNumber="+this.tableNumber,
						})
					}else{
						uni.reLaunch({
							url: "../role-user/scan-page"
						})
					}
				} else if (this.urlType == 3) {
					uni.reLaunch({
						url: "../role-user/user"
					})
				} else if (this.urlType == 4) {
					uni.reLaunch({
						url: "../role-daren/user"
					})
				} else if (this.urlType == 5) {
					uni.reLaunch({
						url: "../role-daren/user"
					})
				} else if (this.urlType == 6) {
					uni.reLaunch({
						url: "../login/admin-login"
					})
				} else if (this.urlType == 7) {
					uni.reLaunch({
						url: "../role-user/reserve"
					})
				} else if (this.urlType == 8) {
					
				} else if (this.urlType == 9) {
					uni.reLaunch({
						url: "../role-admin/store-wine"
					})
				} else {
					uni.showToast({
						title: '请扫描正确的桌位二维码！', icon: 'none',duration: 5000,
					})
				}
			},
		}
	}
</script>

<style>
	.content {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}
</style>
